package com.mybatis.mapper;

import com.mybatis.pojo.Emp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Copyright (c) 2023-2033 All Rights Reserved
 *
 * 动态SQL语句实现
 * 通过 if、where、trim、choose|when|otherwise SQL语句随入参动态调整
 *
 * @date: 2023/10/18
 */
public interface DynamicSqlMapper {

    /**
     * 多条件查询
     * 1. if
     * 2. where
     * 3. trim
     */
    List<Emp> getEmpByCondition(Emp emp);

    /**
     * 条件查询
     * choose
     * when
     * otherwise
     */
    List<Emp> getEmpByChoose(Emp emp);

    /**
     * 通过数组批量删除
     * foreach 遍历数组元素
     */
    int deleteEmpByArray(@Param("eids") Integer[] eids);

    /**
     * 通过list结合实现批量添加
     * foreach 遍历集合元素
     */
    int insertEmpByList(@Param("emps") List<Emp> emps);

    /**
     * sql 复用SQL语句中重复内容
     */
    List<Emp> getEmpBySql();

}
